package util.android.window;

import util.exception.ManejarExcepcion;

import com.androidutil.R;

import android.content.Context;
import android.content.DialogInterface;
import android.view.Gravity;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;

public class AceptarCancelarDialog 
extends ScrollDialog
implements OnAceptarCancelarListener
{
	
	private final ManejarExcepcion mManejarExcepcion;
	
	private OnAceptarCancelarListener onAceptarCancelarListener;
	
	//private OnAceptarCancelarListener onAceptarCancelarListenerAlternativo;
	
	/*
	public AceptarCancelarDialog(Context context) {	
		this(context,null);
	}
	*/

	public AceptarCancelarDialog(Context context, ManejarExcepcion manejarExcepcion) {		
		super(context);
		this.mManejarExcepcion = manejarExcepcion;
		
		LinearLayout.LayoutParams p = 
				new LinearLayout.LayoutParams(
						LinearLayout.LayoutParams.WRAP_CONTENT,
						LinearLayout.LayoutParams.WRAP_CONTENT);
		p.gravity = Gravity.CENTER;
		
		LinearLayout lyAceptarCancelar = (LinearLayout) View.inflate(getContext(), R.layout.dialog_aceptar_cancelar, null);				
		getLayout().addView(lyAceptarCancelar,p);	
		
		Button btn;		
		btn = (Button) findViewById(R.id.btnAceptar);
		btn.setOnClickListener(new View.OnClickListener() {					
			@Override
			public void onClick(View v) {			
				try {
					if(onAceptar())
						cancel();
				} catch (Exception e) {
					mManejarExcepcion.manejarExcepcion(e);
				}												
			}
		});
		
		btn = (Button) findViewById(R.id.btnCancelar);
		btn.setOnClickListener(new View.OnClickListener() {					
			@Override
			public void onClick(View v) {			
				try {
					onCancelar();
					cancel();
				} catch (Exception e) {
					mManejarExcepcion.manejarExcepcion(e);
				}
			}
		});
		
		this.setOnDismissListener(new OnDismissListener() {
			@Override
			public void onDismiss(DialogInterface dialog) {
				try {
					onCerrar();
				}
				catch(Exception e) {
					mManejarExcepcion.manejarExcepcion(e);
				}
			}
		});
		
		
	}
		
		
	public void setOnAceptarCancelarListener(
			OnAceptarCancelarListener onAceptarCancelarListener) {
		this.onAceptarCancelarListener = onAceptarCancelarListener;
	}

	
	@Override
	public boolean onAceptar() throws Exception {
		if(onAceptarCancelarListener!=null)
			return onAceptarCancelarListener.onAceptar();
		//if(onAceptarCancelarListenerAlternativo!=null)
		//	onAceptarCancelarListenerAlternativo.onAceptar();
		return true;
	}


	@Override
	public void onCancelar() throws Exception {
		if(onAceptarCancelarListener!=null)
			onAceptarCancelarListener.onCancelar();
		//if(onAceptarCancelarListenerAlternativo!=null)
		//	onAceptarCancelarListenerAlternativo.onCancelar();				
	}


	@Override
	public void onCerrar() throws Exception {
		if(onAceptarCancelarListener!=null)
			onAceptarCancelarListener.onCerrar();
		//if(onAceptarCancelarListenerAlternativo!=null)
		//	onAceptarCancelarListenerAlternativo.onCerrar();
	}
		
}
